home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / Tools / keycode / keycode.c < prev    next >
C/C++ Source or Header  |  1995-06-18  |  3KB  |  170 lines

  1. /*
  2.  * code - a program to determine the numerical codes for keys on the
  3.  * keyboard.
  4.  *
  5.  * call:
  6.  *    code
  7.  *
  8.  * instructions:
  9.  *     Call code, and you will get the prompt ``code> ''
  10.  *    enter the key and and you will see the numerical
  11.  *    codes in decimal, octal and hexadecimal.
  12.  *    Enter DEL twice to escape the program.
  13.  *
  14.  * (c) 1986 by Kim Chr. Madsen @ AmbraSoft A/S
  15.  *     kimcm@olamb.UUCP or ..seismo!mcvax!diku!olamb!kimcm
  16.  *
  17.  */
  18.  
  19. #include <stdio.h>
  20. #include <sys/types.h>
  21. #include <termio.h>
  22. #include <sys/ioctl.h>
  23. #include "ascii.h"
  24.  
  25. struct    termio tty, ntty;
  26.  
  27. main(argc, argv)
  28. int  argc;
  29. char *argv[];
  30. {
  31.     char        *prompt = "keycode> ";
  32.     char        c;
  33.     int        pos;
  34.     int        del=0;
  35.  
  36.     printf("Hit DEL twice to exit.\n");
  37.     if (ioctl(0, TCGETA, &tty)) {
  38.         perror("ioctl");
  39.         exit(1);
  40.     }
  41.     ntty = tty; 
  42.     ntty.c_iflag &= ~IXON;
  43.     ntty.c_iflag &= ~IXOFF;
  44.     ntty.c_lflag &= ~ISIG;
  45.     ntty.c_lflag &=    ~ICANON;
  46.     ntty.c_lflag &=    ~ECHO;
  47.     ntty.c_oflag &= ~OPOST;
  48.     ntty.c_cc[VTIME] = 30;
  49.     ntty.c_cc[VMIN] = 1;
  50.     ioctl(0, TCSETA, &ntty);
  51.     printf(prompt);
  52.     pos=3;
  53.     for (;;) {
  54.         c=getchar();
  55.         switch (c) {
  56.         case NUL : 
  57.             printf("<NUL>");
  58.             break;
  59.         case SOH : 
  60.             printf("<SOH>");
  61.             break;
  62.         case STX : 
  63.             printf("<STX>");
  64.             break;
  65.         case ETX : 
  66.             printf("<ETX>");
  67.             break;
  68.         case EOT : 
  69.             printf("<EOT>");
  70.             break;
  71.         case ENQ : 
  72.             printf("<ENQ>");
  73.             break;
  74.         case ACK : 
  75.             printf("<ACK>");
  76.             break;
  77.         case BEL : 
  78.             printf("<BEL>");
  79.             break;
  80.         case BS : 
  81.             printf("<BS> ");
  82.             break;
  83.         case HT : 
  84.             printf("<HT> ");
  85.             break;
  86.         case LF : 
  87.             printf("<LF> ");
  88.             break;
  89.         case VT : 
  90.             printf("<VT> ");
  91.             break;
  92.         case FF : 
  93.             printf("<FF> ");
  94.             break;
  95.         case CR : 
  96.             printf("<CR> ");
  97.             break;
  98.         case SO : 
  99.             printf("<SO> ");
  100.             break;
  101.         case SI : 
  102.             printf("<SI> ");
  103.             break;
  104.         case DLE : 
  105.             printf("<DLE>");
  106.             break;
  107.         case DC1 : 
  108.             printf("<DC1>");
  109.             break;
  110.         case DC2 : 
  111.             printf("<DC2>");
  112.             break;
  113.         case DC3 : 
  114.             printf("<DC3>");
  115.             break;
  116.         case DC4 : 
  117.             printf("<DC4>");
  118.             break;
  119.         case NAK : 
  120.             printf("<NAK>");
  121.             break;
  122.         case SYN : 
  123.             printf("<SYN>");
  124.             break;
  125.         case ETB : 
  126.             printf("<ETB>");
  127.             break;
  128.         case CAN : 
  129.             printf("<CAN>");
  130.             break;
  131.         case EM : 
  132.             printf("<EM> ");
  133.             break;
  134.         case SUB : 
  135.             printf("<SUB>");
  136.             break;
  137.         case ESC : 
  138.             printf("<ESC>");
  139.             break;
  140.         case FS : 
  141.             printf("<FS> ");
  142.             break;
  143.         case GS : 
  144.             printf("<GS> ");
  145.             break;
  146.         case RS : 
  147.             printf("<RS> ");
  148.             break;
  149.         case US : 
  150.             printf("<US> ");
  151.             break;
  152.         case SP : 
  153.             printf("<SP> ");
  154.             break;
  155.         case DEL :
  156.             if (del) goto end;
  157.             del++;
  158.             printf("<DEL>");
  159.             break;
  160.         default :
  161.             printf("%c    ",c);
  162.             break;
  163.         }
  164.         printf(" %4d 0%-4o 0x%-4x\n\r%s",c,c,c,prompt);
  165.         if (c != DEL) del=0;
  166.     }
  167. end:    printf("\n\r");
  168.     ioctl(0, TCSETA, &tty);
  169. }
  170.